Confira os comandos a partir da linha 22 do tutorial
## Essa linha é um comentário. A linha abaixo é um comando. Deixe o cursor (aquela barrinha vertical que fica piscando) na linha do comando que deseja executar e aperte CTRL+ENTER. Tente fazer isso com o comando da linha abaixo.
2+2## [1] 4
##Repita o comando com a equação abaixo
3+4## [1] 7
##Repita o comando com a função abaixo
sqrt(4)## [1] 2
##Repita o comando com a função abaixo
sqrt(81)## [1] 9
##Para executar mais de uma linha de código, selecione tudo com o botão direito do mouse e aperte CTRL+ENTER
567+876## [1] 1443
54*34## [1] 1836
28-98## [1] -70
sqrt(121)## [1] 11
Geralmente não usamos o R para fazer contas simples, mas para realizar cálculos sobre vetores.
Imagine que juntamos os valores pagos de aluguel por 13 estudantes que acabaram de mudar para Natal para estudar na UFRN, e com esses valores criamos o vetor “aluguel”
Nós criamos um vetor assim:
aluguel = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210)ou assim:
aluguel <- c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210)Perceba que você criou um vetor chamado “aluguel” na área Environment.
Suponha que eu queira saber a média aritmética desse conjunto de dados. Que conta preciso fazer?
Soma de todos os valores / N
sum(aluguel)## [1] 12453.1
length(aluguel)## [1] 13
Soma de todos os valores / N
sum(aluguel)/length(aluguel)## [1] 957.9308
Posso dar nomes para os valores criados a partir de funções
soma = sum(aluguel)
n = length(aluguel)
soma/n## [1] 957.9308
Uma das vantagens do R é que ele faz essas contas sem precisarmos saber a fórmula!
A função para calcular a média de um vetor é mean(nome do vetor)
mean(aluguel)## [1] 957.9308
Crie um vetor com as idades dos alunos da turma e
No geral, nós não inserimos os vetores manualmente para análise, mas os importamos de uma tabela.
Vamos aprender a fazer isso no R.
É bom pensarmos que pacotes vamos usar para as análises.
Precisamos primeiro instalar os pacotes que vamos usar com a função install.packages()
install.packages("readxl") #permite carregar arquivos .xls
install.packages("ggplot2") #permite gerar gráficos a partir de um conjunto de dadosPerceba que o nome do pacote é inserido entre aspas duplas.
Vamos carregar os pacotes que iremos usar nesse curso com a função library()
library(readxl)
library(ggplot2)Definindo área de trabalho
session (ou seção) >> set working directory >> choose directory
Definindo área de trabalho
Podemos informar a área de trabalho manualmente (eu prefiro assim)
#exemplo 1
setwd("~/Documents/Mahayana/academics/cursos/introstatistics/datasets/")
#exemplo 2
setwd("C:/Users/Mahayana/academics/cursos/introstatistics/datasets")Dizer ao R que conjunto daquela pasta ele deve ler e que nome ele receberá
Para isso, usamos a função read_excel
nome.do.conjunto = read_excel(“Nome_do_arquivo.xlsx”)
Hoje vamos importar o conjunto “scores.xlsx”, com o exemplo usado em Hinton (2004, Cap 2).
Esse conjunto de dados reúne as notas dos alunos de 0 a 100 para uma disciplina de graduação.
dados.scores = read_excel("scores.xlsx")Você também pode importar arquivos em .txt. Nesse caso, use a função read.table e adicione à sintaxe a expressão header = TRUE para informar que a primeira linha do arquivo é o nome (header) da coluna
dados.scores = read.table("scores.txt,", header = TRUE)Clique no conjunto recém-criado na área ENVIRONMENT
Você pode agora ver o conjunto de dados que importamos
A função str() te retorna informações sobre esse conjunto de dados, dizendo o nome das variáveis.
str(dados.scores)## Classes 'tbl_df', 'tbl' and 'data.frame': 100 obs. of 1 variable:
## $ scores: num 22 55 54 51 90 38 67 46 55 37 ...
Quando você for usar uma função qualquer (e.g. f()) para ler um vetor qualquer (e.g.,v) dentro de um conjunto de dados qualquer (e.g. dataset), sua sintaxe será f(dataset$v)
Vamos ordenar o conjunto de dados dados.score e ver quantas observações ele tem para ver como isso funciona:
length(dados.scores$scores)## [1] 100
sort(dados.scores$scores)## [1] 0 9 15 22 26 30 32 32 33 34 37 37 38 41 43 44 45 45 45 46 46 47 47
## [24] 48 48 49 49 49 50 50 50 50 50 51 51 51 52 52 52 52 52 53 53 54 54 54
## [47] 54 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 57 57 57 58 58 58 58
## [70] 58 59 59 59 59 59 60 60 60 60 60 61 61 61 62 62 62 62 63 63 64 64 65
## [93] 67 68 69 71 75 78 80 90
Para conhecer a distribuição dos nossos dados, “plotamos” a frequência dos dados em um tipo de gráfico chamado histograma (cf. Hinton, p.19)
No R, usamos um pacote chamado ggplot2 e a função ggplot() para fazer vários tipos de gráfico, inclusive histogramas.
A sintaxe do ggplot2 é:
ggplot(nome_do_conjunto_de_dados, aes(x = valor_que_vai_no_eixo_x, y = valor_que_vai_no_eixo_y))Dica para se lembrar da sintaxe: aes vem de aesthetics. Ou seja, essa função define a estética, a cara do gráfico a partir dos vetores do conjunto de dados que estamos analisando.
Vamos tentar fazer o histograma dos dados dos scores para fazer algo semelhante ao gráfico da página 19 de Hinton
ggplot(dados.scores, aes(x = scores, y = ))Precisamos informar que tipo de gráfico queremos!
ggplot(dados.scores, aes(x = scores, y = ))+
geom_histogram()## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Vamos entender o que ele quis dizer com esse bin = 30
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## [1] 0 9 15 22 26 30 32 32 33 34 37 37 38 41 43 44 45 45 45 46 46 47 47
## [24] 48 48 49 49 49 50 50 50 50 50 51 51 51 52 52 52 52 52 53 53 54 54 54
## [47] 54 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 57 57 57 58 58 58 58
## [70] 58 59 59 59 59 59 60 60 60 60 60 61 61 61 62 62 62 62 63 63 64 64 65
## [93] 67 68 69 71 75 78 80 90
Queremos espalhar os dados para que cada quadradinho no gráfico represente um valor. Queremos dizer que os valores (breaks) do histograma devem ir de 0 a 100 (seq(0,100)) e que as observações devem ser dadas em um intervalo de 1 ponto (seq(by=1))
ggplot(dados.scores, aes(x = scores, y = ))+
geom_histogram(breaks=seq(0, 100, by = 1))ggplot(dados.scores, aes(x = scores, y = ))+
geom_histogram(breaks=seq(0, 100, by = 1))Vamos dar uma boa olhada nesse gráfico e ver o que ele nos diz. Onde as notas estão concentradas? Quais as medidas mais afastadas do centro?
sort(dados.scores$scores)## [1] 0 9 15 22 26 30 32 32 33 34 37 37 38 41 43 44 45 45 45 46 46 47 47
## [24] 48 48 49 49 49 50 50 50 50 50 51 51 51 52 52 52 52 52 53 53 54 54 54
## [47] 54 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 57 57 57 58 58 58 58
## [70] 58 59 59 59 59 59 60 60 60 60 60 61 61 61 62 62 62 62 63 63 64 64 65
## [93] 67 68 69 71 75 78 80 90
Úteis para identificar um resultado que representa o conjunto de dados
Para um vetor
aluguel = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210)
mean(aluguel)## [1] 957.9308
Para um conjunto de dados
mean(dados.scores$scores)## [1] 52.62
Vantagem: sensível a todos os valores da amostra
aluguel = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210)
mean(aluguel)## [1] 957.9308
aluguel.2 = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210,5060)
mean(aluguel.2)## [1] 1250.936
Desvantagem (?): sensível a todos os valores da amostra
aluguel = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210)
mean(aluguel)## [1] 957.9308
aluguel.2 = c(345.2, 932, 784, 1042.3, 2102.9, 917.9, 890, 732, 832, 974.4, 668.4, 1022, 1210,5060)
mean(aluguel.2)## [1] 1250.936
Você precisa conhecer seus dados para saber o que valores extremos indicam e o que se deve fazer com eles!
Medida central na distribuição da amostra
sort(dados.scores$scores)## [1] 0 9 15 22 26 30 32 32 33 34 37 37 38 41 43 44 45 45 45 46 46 47 47
## [24] 48 48 49 49 49 50 50 50 50 50 51 51 51 52 52 52 52 52 53 53 54 54 54
## [47] 54 55 55 55 55 55 55 56 56 56 56 56 56 56 57 57 57 57 57 58 58 58 58
## [70] 58 59 59 59 59 59 60 60 60 60 60 61 61 61 62 62 62 62 63 63 64 64 65
## [93] 67 68 69 71 75 78 80 90
median(dados.scores$scores)## [1] 55
Vamos comparar as medianas de alugel e aluguel2
median(aluguel)## [1] 917.9
median(aluguel.2)## [1] 924.95
Vamos ver como as medianas foram calculadas
sort(aluguel)## [1] 345.2 668.4 732.0 784.0 832.0 890.0 917.9 932.0 974.4 1022.0
## [11] 1042.3 1210.0 2102.9
sort(aluguel.2)## [1] 345.2 668.4 732.0 784.0 832.0 890.0 917.9 932.0 974.4 1022.0
## [11] 1042.3 1210.0 2102.9 5060.0
Considere que você é um agente de viagens que deve escolher o melhor destino turístico para três grupos de cerca de 50 pessoas. Você primeiro se pergunta quantos anos eles têm. Um simples comando no R pode te dar essa resposta se você tem a idade dos membros do grupo.
mean(idade1)## [1] 31.4717
mean(idade2)## [1] 32.58491
mean(idade3)## [1] 33.71698
Considerando a idade média do grupo, que lugares você sugeriria para passar um feriadão?
Já pensou? Ótimo, vamos ver a distribuição da idade dessas pessoas.
Vamos dar uma olhada nas medianas de cada grupo
median(idade1)## [1] 31
median(idade2)## [1] 36
median(idade3)## [1] 35
Não adianta apenas saber a média ou mediana do conjunto de dados se não souber como se organiza a distribuição dos valores!
É possível afirmar que
Você tem o arquivo chamado scorestotal.xlsx. Nesse arquivo, você tem uma coluna com o conjunto de dados “presente”, que acabamos de analisar, e o conjunto “passado”, descrito por Hinton na página 18. A coluna “presente” indica as notas obtidas no ano corrente. A coluna “passado” indica as notas obtidas no ano anterior.
Importe o conjunto de dados
dados.scores = read_excel("scorestotal.xlsx")Calcule as medidas de tendência central para os dois anos
mean(dados.scores$presente)## [1] 52.62
mean(dados.scores$passado)## [1] 54.25
median(dados.scores$presente)## [1] 55
median(dados.scores$passado)## [1] 56.5
ggplot(dados.scores, aes(x=presente, y=))+
geom_histogram(breaks=seq(0, 100, by = 1))+
labs(x="Nota na prova (ano presente)", y="Número de alunos")ggplot(dados.scores, aes(x=passado, y=))+
geom_histogram(breaks=seq(0, 100, by = 1))+
labs(x="Nota na prova (ano passado)", y="Número de alunos")Brinque com os os códigos que você já tem mudando alguns valores e adicionando mais funções. A função labs do ggplot é usada para nomear o eixo x e eixo y como você quiser.
ggplot(dados.scores, aes(x=presente, y=))+
geom_histogram(breaks=seq(0, 100, by = 1))+
labs(x="Nota na prova (ano presente)", y="Número de alunos")Dica: se vc instalar e carregar o pacote scales, você pode usar a função pretty_breaks para escolher os intervalos a serem mostrados no gráfico. Aqui, eu pedi para ele me mostrar 10 intervalos (pretty_breaks(n=10)) na sequência que determinei de 0 a 100.
ggplot(dados.scores, aes(x=presente, y=))+
geom_histogram(breaks=seq(0, 100, by = 1))+
labs(x="Nota na prova (ano presente)", y="Número de alunos")+
scale_x_continuous(breaks=pretty_breaks(n=10))Algumas funções para iniciar sua seção
install.packages() #instala um pacote
library() #carrega um pacote
setwd() #indica o caminho para a pasta em que estão o conjunto de dados
read_excel() #importa conjunto de dados em xlsx
read.table() #importa conjunto de dados em outros formatosAlgumas funções para descrever seu conjunto de dados
c() #cria um vetor
sum() #soma todos os valores de um vetor
length() #indica o número de observações em um vetor
mean() #indica a média de um vetor
median() #indica a mediana de um vetor
sort() #organiza as observações do vetor por ordem crescente (para ordem descrescente, adicione decreasing = TRUE)ggplot(dados, aes(x,y)) + #indica os vetores usados para definir eixo x e y para qualquer tipo de gráfico
geom_histogram() + #indica o tipo de gráfico - nesse caso, um histograma (mas há geom_line, geom_boxplot, geom_bar, geom_point...)
labs(x = "", y = "") #personaliza o nome dos eixos x e y